package com.gszyxy.bigdataclass1group3.utils;


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5 {

    // 方法：计算并返回给定字符串的MD5哈希值
    public static String getMD5Hash(String input) {
        try {
            // 获取MD5算法的MessageDigest实例
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 更新摘要，这里将输入字符串转换为字节数组
            md.update(input.getBytes());

            // 计算哈希值，得到一个字节数组
            byte[] digest = md.digest();

            // 将字节数组转换为十六进制字符串
            StringBuilder hexString = new StringBuilder();
            for (byte b : digest) {
                // 将每个字节转换为两位的十六进制数，并添加到StringBuilder中
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) {
                    hexString.append('0'); // 如果只有一位，前面补0
                }
                hexString.append(hex);
            }

            // 返回计算得到的MD5哈希值
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            // 如果MD5算法不可用，则抛出运行时异常
            throw new RuntimeException("MD5 algorithm not found!", e);
        }
    }

    // 主方法：测试MD5哈希计算
    public static void main(String[] args) {
        // 要计算MD5哈希值的字符串
        String inputString = "123456";

        // 调用getMD5Hash方法计算哈希值
        String md5Hash = getMD5Hash(inputString);

        // 打印原始字符串和计算得到的MD5哈希值
        System.out.println("Original String: " + inputString);
        System.out.println("MD5 Hash: " + md5Hash);
    }
}